package com.itheima.net;

import com.itheima.pojo.user;
import com.itheima.servicce.userService;

import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Random;

/**
 * @author Azer
 * @LOVE,,,
 * @Date 2021/09/2021/9/4 09:40:47
 * @Version 1.0
 */
//服务端
public class Server {
    static ServerSocket serverSocket;
    static Socket socket;

    static OutputStream op;
    static InputStream in;

    static byte[] buf;

    static {
        System.out.println("======服务端======");
        try {
            //TCP协议的服务端对象
            serverSocket=new ServerSocket(7777);

            // 必须调用accept方法：等待接收客户端的Socket连接请求，建立Socket通信管道
            //侦听客户端的连接请求。 连接成功：返回Socket对象
            socket = serverSocket.accept();

            //客户端发送消息---输出流
            op = socket.getOutputStream();

            //客户端接收消息---输入流
            in = socket.getInputStream();
            buf=new byte[1024];

        } catch (Exception e) {
            e.printStackTrace();
        }

    }



    public static void main(String[] args) throws Exception {

        //接收客户端发送的消息

            //使用输入流读取数据
            int len = in.read(buf);

            //把接收到的字节数组转化为字符数组---用户名
            String userName=new String(buf,0,len);
            System.out.println("客户端发送的y用户名为:"+userName);

            //访问数据库，验证用户名是否被注册
            userService userService=new userService();
            boolean result = userService.checkUserName(userName);


            String code="";//验证码
            //如果是true则可以注册
            if(result){
                //未注册，生成验证码返回客户端
                String msg="恭喜，该用户名可以使用!"+"\n"+"验证码：";
                Random r=new Random();

                for (int i = 0; i <4 ; i++) {
                    int n = r.nextInt(10);
                    code+=n;
                }


                op.write(msg.getBytes());
                op.write(code.getBytes());


            }else {
                op.write("该用户名已被注册".getBytes());
            }

            //接收客户端的数据
            int len1 = in.read(buf);
            //将字节数组转化为字符数组
            String data=new String(buf,0,len1);
            String[] datas = data.split(",");

            //判断客户端验证码是否跟服务端验证码是否相同
            if(datas[2].equals(code)){
                user user=new user(null,datas[0],datas[1]);
                System.out.println(user.getUserName()+" "+user.getPassword());

                //调用方法 添加用户到数据库
                boolean b = userService.adduser(user);
                if(b){
                    //注册成功
                    String msg1="恭喜您，注册成功！";
                    op.write(msg1.getBytes());


                }else {
                    String msg1="很遗憾，注册失败！";
                    op.write(msg1.getBytes());
                }

                op.flush();
                op.close();

            }





    }
}
